package cn.learn.pay.wechat.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;

/**
 * 支付到零钱包需要的报文
 * https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
 *
 * @author huangyezhan
 * @version 1.0
 * @date 2021年08月26日21:45
 */
@Setter
@Getter
@Accessors(chain = true)
public class PayXmlDTO {
    /**
     * NO_CHECK：不校验真实姓名
     */
    public final static String NO_CHECK    = "NO_CHECK";
    /**
     * FORCE_CHECK：强校验真实姓名
     */
    public final static String FORCE_CHECK = "FORCE_CHECK";


    /**
     * 商户app的id
     */
    @NotBlank(message = "商户appid为必要信息")
    private String mch_appid;
    /**
     * 商户号id
     */
    @NotBlank(message = "商户mchid为必要信息")
    private String mchid;
    /**
     * 随机字符串
     */
    @NotBlank(message = "随机字符串为必要信息")
    private String nonce_str;
    /**
     * 商户订单号
     */
    @NotBlank(message = "商户订单号为必要信息")
    private String partner_trade_no;
    /**
     * 用户openid
     */
    @NotBlank(message = "用户openid为必要信息")
    private String openid;
    /**
     * 校验用户姓名选项
     * NO_CHECK：不校验真实姓名
     * FORCE_CHECK：强校验真实姓名
     */
    @NotBlank(message = "校验用户姓名选项为必要信息")
    private String check_name;
    /**
     * 收款用户真实姓名。
     * 如果check_name设置为FORCE_CHECK，则必填用户真实姓名
     * 如需电子回单，需要传入收款用户姓名
     */
    private String re_user_name;
    /**
     * 付款金额，单位：【分】
     */
    @NotBlank(message = "付款金额为必要信息")
    private String amount;
    /**
     * 付款备注
     */
    private String desc;
    /**
     * Ip地址
     * 该IP同在商户平台设置的IP白名单中的IP没有关联，该IP可传用户端或者服务端的IP。
     */
    @NotBlank(message = "Ip地址为必要信息")
    private String spbill_create_ip;
    /**
     * 签名
     */
    @NotBlank(message = "签名为必要信息")
    private String sign;

}
